package java19_3_24_lambda;

import java19_3_24_lambda.reflect.Student;

import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @author yuisama
 * @date 2022/03/24 19:50
 **/
public class MethodTest {
    public static void main(String[] args) throws Exception{
        // 1.要使用反射，先拿到该类的class对象
        Class<?> cls = Class.forName("java19_3_24_lambda.reflect.Student");
        // 2.获取该类的所有方法Method对象
        // 拿到private的fun方法对象
        // cls.getDeclaredMethod(方法名称，方法的参数类型)
        Method methodFun = cls.getDeclaredMethod("fun");
        methodFun.setAccessible(true);
        // fun方法是成员方法，必须通过Student类的对象来调用
        Student stu = (Student) cls.newInstance();
        // 开始真正调用了~
        // methodFun.invoke(通过哪个具体对象来调用，方法的参数)
        methodFun.invoke(stu);
        // 拿到staticFunc对象
        Method staticFunc = cls.getDeclaredMethod("staticFunc",String.class);
        // 调用staticFunc方法
        // 静态方法不需要对象
        staticFunc.invoke(null,"孙楠");
    }
}